<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>09-计算属性vs方法Methods</title>
    <style>
        table {
            border: 1px solid #000;
            text-align: center;
            width: 240px;
        }
        th,td {
            border: 1px solid #000;
        }
        h3 {
            position: relative;
        }
    </style>
</head>
<body>
    <div id="app">
        <h3>小睿的礼物清单🛒<span>{{ totalCount }}</span></h3>
        <h3>小睿的礼物清单🛒<span>{{ totalCount }}</span></h3>
        <h3>小睿的礼物清单🛒<span>{{ totalCount }}</span></h3>
        <h3>小睿的礼物清单🛒<span>{{ totalCount }}</span></h3>
        <h3>小睿的礼物清单🛒<span>{{ totalCount }}</span></h3>
        <h3>小睿的礼物清单🛒<span>{{ totalCount }}</span></h3>
        <h3>小睿的礼物清单🛒<span>{{ totalCount }}</span></h3>
        
        
        <table>
          <tr>
            <th>名字</th>
            <th>数量</th>
          </tr>
          <tr v-for="(item, index) in list" :key="item.id">
            <td>{{ item.name }}</td>
            <td>{{ item.num }}个</td>
          </tr>
        </table>
      
        <p>礼物总数：{{totalCount}} 个</p>
      </div>
      <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
      <script>
        const app = new Vue({
          el: '#app',
          data: {
            list: [
              { id: 1, name: '篮球', num: 1 },
              { id: 2, name: '玩具', num: 2 },
              { id: 3, name: '铅笔', num: 5 },
            ]
          },
          methods:{
            // totalCountFn (){
            //     console.log('methods方法执行了')
            //     let total = this.list.reduce((sum, i) => sum + i.num, 0)
            //     return total
            // }
          },
          computed:{
            totalCount () {
              // 计算属性：有缓存在，一旦计算出来结果，就会立刻缓存
              // 下一次读取 -> 直接读缓存就行 -> 性能特别高
              console.log('计算属性执行了');
              
                let total = this.list.reduce((sum, i) => sum + i.num, 0)
                return total
            }
          }
        })
        
        
      </script>
</body>
</html>